'''导入库：导入 gpiozero 库中的 Button 类用于按键控制，time 库用于程序休眠。
初始化按键：定义两个按键连接的 GPIO 引脚，创建两个 Button 对象。
定义回调函数：为每个按键定义按下和释放的回调函数，在函数中打印相应的状态信息。
绑定事件：将回调函数绑定到对应按键的按下和释放事件。
主循环：程序进入无限循环，使用 time.sleep(0.1) 降低 CPU 占用，等待按键事件触发。
异常处理：捕获 KeyboardInterrupt 异常，在程序终止时关闭按键资源。'''
from gpiozero import Button
import time

# 定义两个按键连接的 GPIO 引脚
BUTTON_1_PIN = 24
BUTTON_2_PIN = 25

# 初始化两个按键
button_1 = Button(BUTTON_1_PIN)
button_2 = Button(BUTTON_2_PIN)

def on_button_1_pressed():
    """
    按键 1 按下时触发的回调函数，打印按键 1 按下信息。
    """
    print("按键 1 已按下")

def on_button_1_released():
    """
    按键 1 释放时触发的回调函数，打印按键 1 释放信息。
    """
    print("按键 1 已释放")

def on_button_2_pressed():
    """
    按键 2 按下时触发的回调函数，打印按键 2 按下信息。
    """
    print("按键 2 已按下")

def on_button_2_released():
    """
    按键 2 释放时触发的回调函数，打印按键 2 释放信息。
    """
    print("按键 2 已释放")

# 绑定两个按键按下和释放事件的回调函数
button_1.when_pressed = on_button_1_pressed
button_1.when_released = on_button_1_released
button_2.when_pressed = on_button_2_pressed
button_2.when_released = on_button_2_released

try:
    print("开始监测两个按键状态，按 Ctrl+C 退出...")
    while True:
        # 程序持续运行，等待事件触发
        time.sleep(0.1)  
except KeyboardInterrupt:
    print("程序终止")
finally:
    # 关闭按键资源
    button_1.close()
    button_2.close()
